package concursos.ejb;

import java.io.IOException;
import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import concursos.daos.ArquivoDAO;
import concursos.daos.TipoArquivoDAO;
import concursos.interfaces.ArquivoService;
import concursos.modelos.Arquivo;
import concursos.modelos.TipoArquivo;

@Stateless
@LocalBean
public class ArquivoEjb implements ArquivoService {
	
	private ArquivoDAO arquivoDAO;
	private TipoArquivoDAO tipoArquivoDAO;
	@PersistenceContext(unitName = "meusconcursosejb")
	private EntityManager manager;
	
	public TipoArquivoDAO getTipoArquivoDAO() {
		if (this.tipoArquivoDAO == null)
			this.tipoArquivoDAO = new TipoArquivoDAO(this.manager);
		return this.tipoArquivoDAO;
	}

	public ArquivoDAO getArquivoDAO() {
		if (this.arquivoDAO == null)
			this.arquivoDAO = new ArquivoDAO(this.manager);
		return this.arquivoDAO;
	}

	public ArquivoEjb() {
	}

	public void adicionarArquivo(Arquivo arquivo) throws IOException {
		this.getArquivoDAO().adicionarArquivo(arquivo);
	}

	public Arquivo buscarArquivo(int id) {
		return this.getArquivoDAO().buscaPorId(id);
	}

	public void adicionarTipoArquivo(TipoArquivo tipoArquivo) {
		this.getTipoArquivoDAO().adicionarTipoArquivo(tipoArquivo);
	}

	public void removerTipoArquivo(TipoArquivo tipoArquivo) {
		this.getTipoArquivoDAO().removerTipoArquivo(tipoArquivo);
	}

	public List<TipoArquivo> listarTipoArquivos(int usuario) {
		return this.getTipoArquivoDAO().listarTiposArquivos(usuario);
	}

	public TipoArquivo buscarTipoArquivo(int id) {
		return this.getTipoArquivoDAO().buscarTipoArquivo(id);
	}

	public void excluirArquivo(Arquivo arquivo) {
		this.getArquivoDAO().excluirArquivo(arquivo);
	}

	public List<Arquivo> listarArquivos(int usuario) {
		return this.getArquivoDAO().listarArquivos(usuario);
	}
	
	public void removerArquivos(Arquivo[] arquivos){
		this.getArquivoDAO().excluirArquivos(arquivos);
	}
	
	public List<Arquivo> listarArquivosPorConcurso(int concurso){
		return this.getArquivoDAO().listarArquivosPorConcurso(concurso);
	}
}
